package com.redpixy.monit.common.util;

/**
 * 
 */


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


/**
 * @author ZhangLei.
 *
 */
public class ArrayUtil {
    
	/**
	 * 检查数组中是否存在这个元素。
	 * @param array
	 * @param element
	 * @return boolean false 表示不存在， true 表示存在。
	 */
	public  static boolean isContent(int [] array ,int element){
		boolean flag = false;
		for(int i=0;i<array.length;i++)
		{
			if(array[i]==element)
			{
				flag = true;
				break;
			}
		}
		return flag;
	}

	/**
	 * 将String [] 转化为 int[]
	 * @param arr
	 * @return
	 */
	public static int[] stringToIntArray(String [] arr){
		int [] intarr = new int[arr.length];
		for(int i=0 ;i<arr.length;i++)
		{
			intarr[i] = Integer.valueOf(arr[i]);
		}
		return intarr;
	}
	
	/**
	 * 将List 内容转化为 Array
	 * @param list
	 * @return
	 */
	public static int[] listToArray(List<Integer> list){
		int [] intarr = new int[list.size()];
		for(int i=0 ;i<list.size();i++)
		{
			intarr[i] = list.get(i);
		}
		return intarr;
	} 
	/**
	 * 将List 内容转化为 Array
	 * @param list
	 * @return
	 */
	public static List ArrayToList(Object [] array ){
		List<Object> list =  new ArrayList<Object>();
		  for (Object object : array) {
	        	list.add(object);
			}
		  return list;
	} 
	/**
	 * 根据 array  得到 array2 的补集
	 * @param array
	 * @param array2
	 * @return
	 */
    public static int[] getPatchArray(int [] array,int[] array2){
    	List<Integer> list = new ArrayList<Integer>();
    	Arrays.sort(array);
		Arrays.sort(array2);
    	for (int i = 0; i < array.length; i++) {
			int index = Arrays.binarySearch(array2, array[i]);
			if (index < 0) {
				list.add(array[i]);
			} 
		}
    	int [] out = new int[list.size()];
    	for (int i = 0; i < list.size(); i++) {
    		out[i] = list.get(i);
		}
    	return  out;
    }
    /**
     * 数组倒序
     * @param array
     */
	public static void sortDesc(int [] array){
	   Arrays.sort(array);
	   for(int left = 0 , right = array.length-1 ;left <right ;left ++ ,right-- ){
		   int temp = array[left];
		   array[left] =array[right];
		   array[right] = temp;
	   }
	}
    /**
     * 数组按照特定顺序排序
     * @param array
     */
	public static int[] sortByOrder(int [] array ,int[] demo){
		Arrays.sort(array);
		List<Integer> list = new ArrayList<Integer>();
    	for (int i = 0; i < demo.length; i++) {
			int index = Arrays.binarySearch(array, demo[i]);
			if (index >= 0) {
				list.add(demo[i]);
			} 
		}
    	array = new int[list.size()];
    	for (int i = 0; i < list.size(); i++) {
    		array[i] = list.get(i);
		}
    	return array;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ArrayUtil.sortByOrder(new int[]{8,5,6,3,2},new int []{2,5,4,9,7,6,10,3,8});
	}

}
